<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>SemOpt: SCCSEQ Class Reference</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>


</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">SemOpt
   &#160;<span id="projectnumber">0.2alpha5-SCC</span>
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.6.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
  initNavTree('classSCCSEQ.html','');
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pri-static-methods">Static Private Member Functions</a>  </div>
  <div class="headertitle">
<div class="title">SCCSEQ Class Reference</div>  </div>
</div><!--header-->
<div class="contents">
<!-- doxytag: class="SCCSEQ" -->
<p>computes all the information about SCCs  
 <a href="classSCCSEQ.html#details">More...</a></p>

<p><a href="classSCCSEQ-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSCCSEQ.html#a4773a37b2ec85f1c113f210242d63da9">SCC</a> (<a class="el" href="classSetArguments.html">SetArguments</a> *, vector&lt; <a class="el" href="classSetArguments.html">SetArguments</a> * &gt; *)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the SCC algorithm.  <a href="#a4773a37b2ec85f1c113f210242d63da9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSCCSEQ.html#aa05867c1604ac1584079f4bf643b1d36">SEQ</a> (vector&lt; <a class="el" href="classSetArguments.html">SetArguments</a> * &gt; *)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static vector&lt; <a class="el" href="classSetArguments.html">SetArguments</a> * &gt; *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSCCSEQ.html#adb5a0f5c376f3e0485bccd119e33a127">getFathersUnion</a> (vector&lt; <a class="el" href="classSetArguments.html">SetArguments</a> * &gt; *, <a class="el" href="classSetArguments.html">SetArguments</a> *)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSCCSEQ.html#a8a3c4f47ec233566eb2a32146077b937">linkMacroGraph</a> (vector&lt; <a class="el" href="classSetArguments.html">SetArguments</a> * &gt; *, <a class="el" href="classSetArguments.html">SetArguments</a> *)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">create the connections between SCCs creating a macroGraph  <a href="#a8a3c4f47ec233566eb2a32146077b937"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSCCSEQ.html#a6efd1e52faf8a810b51a1d6ba74ecfae">genName</a> (unsigned int i)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSCCSEQ.html#a3e78f04209344bbe31b47c277076dc64">toposort</a> (<a class="el" href="classSetArguments.html">SetArguments</a>, vector&lt; int &gt; *)</td></tr>
<tr><td colspan="2"><h2><a name="pri-static-methods"></a>
Static Private Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSCCSEQ.html#a4f71a88e8d1049f2c27c23303170b4b2">strongConnected</a> (<a class="el" href="classArgument.html">Argument</a> *v, <a class="el" href="classSetArguments.html">SetArguments</a> *graph, int *globalIndex, vector&lt; <a class="el" href="classArgument.html">Argument</a> * &gt; *stack, vector&lt; <a class="el" href="classSetArguments.html">SetArguments</a> * &gt; *sccresult, unordered_map&lt; int, <a class="el" href="classExtendedArgument.html">ExtendedArgument</a> * &gt; *nodeMap)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">function needed by SCC  <a href="#a4f71a88e8d1049f2c27c23303170b4b2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9ac95622db921cd44e93a34232ffdf79"></a><!-- doxytag: member="SCCSEQ::finalsorting" ref="a9ac95622db921cd44e93a34232ffdf79" args="(vector&lt; SetArguments * &gt; *, vector&lt; int &gt;)" -->
static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSCCSEQ.html#a9ac95622db921cd44e93a34232ffdf79">finalsorting</a> (vector&lt; <a class="el" href="classSetArguments.html">SetArguments</a> * &gt; *, vector&lt; int &gt;)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">rimappa gli SCC secondo le posizioni toposortate. <br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>computes all the information about SCCs </p>
<p>This function enables you to computes SCCs. The main function is performSCCSEQ() which: </p>
<ul>
<li>computes SCCs </li>
<li>order topologically the SCCs computes </li>
<li>stores them in the output parameter</li>
</ul>
<p>The class is important for the prefAlgorithm classes in its main algorithm</p>
<dl class="author"><dt><b>Author:</b></dt><dd>Koldar </dd></dl>
<dl class="date"><dt><b>Date:</b></dt><dd>Aug 13 2013 </dd></dl>

<p>Definition at line <a class="el" href="SCCSEQ_8h_source.html#l00026">26</a> of file <a class="el" href="SCCSEQ_8h_source.html">SCCSEQ.h</a>.</p>
</div><hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a6efd1e52faf8a810b51a1d6ba74ecfae"></a><!-- doxytag: member="SCCSEQ::genName" ref="a6efd1e52faf8a810b51a1d6ba74ecfae" args="(unsigned int i)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::string <a class="el" href="classSCCSEQ.html#a6efd1e52faf8a810b51a1d6ba74ecfae">SCCSEQ::genName</a> </td>
          <td>(</td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>i</em></td><td>)</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Generates a string numbered useful to be the name of new arguments.</p>
<dl class="pre"><dt><b>Precondition:</b></dt><dd><ul>
<li>No precedent argument name must have Sx as name (where S is rthe character itself while x is the number)</li>
</ul>
</dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">i</td><td>the number to be appended to the character "S" </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>a string composed as "S"+&lt;number_i&gt; </dd></dl>

<p>Definition at line <a class="el" href="SCCSEQ_8cpp_source.html#l00254">254</a> of file <a class="el" href="SCCSEQ_8cpp_source.html">SCCSEQ.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="adb5a0f5c376f3e0485bccd119e33a127"></a><!-- doxytag: member="SCCSEQ::getFathersUnion" ref="adb5a0f5c376f3e0485bccd119e33a127" args="(vector&lt; SetArguments * &gt; *, SetArguments *)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">vector&lt; <a class="el" href="classSetArguments.html">SetArguments</a> * &gt; * <a class="el" href="classSCCSEQ.html#adb5a0f5c376f3e0485bccd119e33a127">SCCSEQ::getFathersUnion</a> </td>
          <td>(</td>
          <td class="paramtype">vector&lt; <a class="el" href="classSetArguments.html">SetArguments</a> * &gt; *&#160;</td>
          <td class="paramname"><em>setSCC</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classSetArguments.html">SetArguments</a> *&#160;</td>
          <td class="paramname"><em>s_i</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>the set union of all SCCs who are fathers of s_i. An SCC s_j is a father of s_i if s_j attacks s_i. </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>setSCC is already toposorted, to improve speedness by searching only with 0&lt;=j&lt;i </dd>
<dd>
i&lt;= setSCC-&gt;size() TODO handle memory leak!!! </dd></dl>

<p>Definition at line <a class="el" href="SCCSEQ_8cpp_source.html#l00429">429</a> of file <a class="el" href="SCCSEQ_8cpp_source.html">SCCSEQ.cpp</a>.</p>

<p>References <a class="el" href="SetArguments_8cpp_source.html#l00094">SetArguments::empty()</a>, and <a class="el" href="SetArguments_8cpp_source.html#l00478">SetArguments::getSubsetAttacks()</a>.</p>

</div>
</div>
<a class="anchor" id="a8a3c4f47ec233566eb2a32146077b937"></a><!-- doxytag: member="SCCSEQ::linkMacroGraph" ref="a8a3c4f47ec233566eb2a32146077b937" args="(vector&lt; SetArguments * &gt; *, SetArguments *)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classSCCSEQ.html#a8a3c4f47ec233566eb2a32146077b937">SCCSEQ::linkMacroGraph</a> </td>
          <td>(</td>
          <td class="paramtype">vector&lt; <a class="el" href="classSetArguments.html">SetArguments</a> * &gt; *&#160;</td>
          <td class="paramname"><em>setSCC</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classSetArguments.html">SetArguments</a> *&#160;</td>
          <td class="paramname"><em>macroGraph</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>create the connections between SCCs creating a macroGraph </p>
<div align="center">
<img src="dot_inline_dotgraph_3.png" alt="dot_inline_dotgraph_3.png" border="0" usemap="#dot_inline_dotgraph_3.map"/>
<map name="dot_inline_dotgraph_3.map" id="dot_inline_dotgraph_3.map"></map>
</div>
<p>In the figure the black color indicates the original graph while the red indicates the new macro graph to create. The function receives as input the set of macro nodes (red nodes) and must compute the red graph in figures.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">sccset</td><td>a set of macro arguments (aka set of argument in relationship with eachother) </td></tr>
    <tr><td class="paramname">macroGraph</td><td>a graph </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="SCCSEQ_8cpp_source.html#l00216">216</a> of file <a class="el" href="SCCSEQ_8cpp_source.html">SCCSEQ.cpp</a>.</p>

<p>References <a class="el" href="Argument_8cpp_source.html#l00162">Argument::add_attackers()</a>, <a class="el" href="Argument_8cpp_source.html#l00152">Argument::add_attacks()</a>, <a class="el" href="SetArguments_8cpp_source.html#l00094">SetArguments::empty()</a>, <a class="el" href="SetArguments_8cpp_source.html#l00085">SetArguments::getArgumentByNumber()</a>, and <a class="el" href="SetArguments_8cpp_source.html#l00415">SetArguments::getSubsetAttackedBy()</a>.</p>

<p>Referenced by <a class="el" href="SCCSEQ_8cpp_source.html#l00073">SEQ()</a>.</p>

</div>
</div>
<a class="anchor" id="a4773a37b2ec85f1c113f210242d63da9"></a><!-- doxytag: member="SCCSEQ::SCC" ref="a4773a37b2ec85f1c113f210242d63da9" args="(SetArguments *, vector&lt; SetArguments * &gt; *)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classSCCSEQ.html#a4773a37b2ec85f1c113f210242d63da9">SCCSEQ::SCC</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classSetArguments.html">SetArguments</a> *&#160;</td>
          <td class="paramname"><em>graph</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">vector&lt; <a class="el" href="classSetArguments.html">SetArguments</a> * &gt; *&#160;</td>
          <td class="paramname"><em>setSCC</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Computes the SCC algorithm. </p>
<p>This function computes the algorithm that finds SCC in a specific graph. For further information about this algorithm, please visit the web page of wikipedia <a href="http://en.wikipedia.org/wiki/Tarjan's_strongly_connected_components_algorithm">http://en.wikipedia.org/wiki/Tarjan's_strongly_connected_components_algorithm</a></p>
<dl class="pre"><dt><b>Precondition:</b></dt><dd><ul>
<li>setSCC must be initialized correctly through a constructor</li>
</ul>
</dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">graph</td><td>the input graph where some SCCs have to be found </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">setSCC</td><td>the list of SCC that has been found in the graph </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="SCCSEQ_8cpp_source.html#l00049">49</a> of file <a class="el" href="SCCSEQ_8cpp_source.html">SCCSEQ.cpp</a>.</p>

<p>References <a class="el" href="SetArguments_8cpp_source.html#l00103">SetArguments::begin()</a>, <a class="el" href="SetArguments_8cpp_source.html#l00112">SetArguments::end()</a>, and <a class="el" href="ExtendedArgument_8h_source.html#l00022">ExtendedArgument::INDEXDEFAULT</a>.</p>

</div>
</div>
<a class="anchor" id="aa05867c1604ac1584079f4bf643b1d36"></a><!-- doxytag: member="SCCSEQ::SEQ" ref="aa05867c1604ac1584079f4bf643b1d36" args="(vector&lt; SetArguments * &gt; *)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classSCCSEQ.html#aa05867c1604ac1584079f4bf643b1d36">SCCSEQ::SEQ</a> </td>
          <td>(</td>
          <td class="paramtype">vector&lt; <a class="el" href="classSetArguments.html">SetArguments</a> * &gt; *&#160;</td>
          <td class="paramname"><em>setSCC</em></td><td>)</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Kahn. NON in loco (variabile L). complessità: O(|V|+|E|)</p>
<p>L ← Empty list that will contain the sorted elements S ← Set of all nodes with no incoming edges while S is non-empty do remove a node n from S insert n into L for each node m with an edge e from n to m do remove edge e from the graph if m has no other incoming edges then insert m into S if graph has edges then return error (graph has at least one cycle) else return L (a topologically sorted order) </p>

<p>Definition at line <a class="el" href="SCCSEQ_8cpp_source.html#l00073">73</a> of file <a class="el" href="SCCSEQ_8cpp_source.html">SCCSEQ.cpp</a>.</p>

<p>References <a class="el" href="SetArguments_8cpp_source.html#l00056">SetArguments::add_Argument()</a>, <a class="el" href="SetArguments_8cpp_source.html#l00103">SetArguments::begin()</a>, <a class="el" href="SetArguments_8cpp_source.html#l00112">SetArguments::end()</a>, <a class="el" href="SCCSEQ_8cpp_source.html#l00120">finalsorting()</a>, <a class="el" href="SCCSEQ_8cpp_source.html#l00216">linkMacroGraph()</a>, <a class="el" href="SetArguments_8cpp_source.html#l00795">SetArguments::printNodeRelations()</a>, and <a class="el" href="SCCSEQ_8cpp_source.html#l00273">toposort()</a>.</p>

</div>
</div>
<a class="anchor" id="a4f71a88e8d1049f2c27c23303170b4b2"></a><!-- doxytag: member="SCCSEQ::strongConnected" ref="a4f71a88e8d1049f2c27c23303170b4b2" args="(Argument *v, SetArguments *graph, int *globalIndex, vector&lt; Argument * &gt; *stack, vector&lt; SetArguments * &gt; *sccresult, unordered_map&lt; int, ExtendedArgument * &gt; *nodeMap)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classSCCSEQ.html#a4f71a88e8d1049f2c27c23303170b4b2">SCCSEQ::strongConnected</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArgument.html">Argument</a> *&#160;</td>
          <td class="paramname"><em>v</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classSetArguments.html">SetArguments</a> *&#160;</td>
          <td class="paramname"><em>graph</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>globalIndex</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">vector&lt; <a class="el" href="classArgument.html">Argument</a> * &gt; *&#160;</td>
          <td class="paramname"><em>stack</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">vector&lt; <a class="el" href="classSetArguments.html">SetArguments</a> * &gt; *&#160;</td>
          <td class="paramname"><em>sccresult</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unordered_map&lt; int, <a class="el" href="classExtendedArgument.html">ExtendedArgument</a> * &gt; *&#160;</td>
          <td class="paramname"><em>nodeMap</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [static, private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>function needed by SCC </p>
<p>This function is the recursive procedure to compile index and lowlink fields of an <a class="el" href="classExtendedArgument.html" title="Represents a class containing the information used in the Tarjan Algorithm.">ExtendedArgument</a>.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">v</td><td>the argument which lowlink and index fields must be compiled </td></tr>
    <tr><td class="paramname">graph</td><td>the graph in which all nodes handled by tarjan algorithm must be contained </td></tr>
    <tr><td class="paramname">globalIndex</td><td>variable used by tarjan algorithm </td></tr>
    <tr><td class="paramname">stack</td><td>a vector of Arguments needed by the tarjan algorthm </td></tr>
    <tr><td class="paramname">sccresult</td><td>the location where put a new SCC when the algorithm reveals it </td></tr>
    <tr><td class="paramname">nodeMap</td><td>a unordered_map that associate for each argument ID number the corrispective class storing lowlink and index values </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="SCCSEQ_8cpp_source.html#l00395">395</a> of file <a class="el" href="SCCSEQ_8cpp_source.html">SCCSEQ.cpp</a>.</p>

<p>References <a class="el" href="SetArguments_8cpp_source.html#l00056">SetArguments::add_Argument()</a>, <a class="el" href="SetArguments_8cpp_source.html#l00103">SetArguments::begin()</a>, <a class="el" href="SetArguments_8cpp_source.html#l00112">SetArguments::end()</a>, <a class="el" href="SetArguments_8cpp_source.html#l00242">SetArguments::getArgumentAttacksInSet()</a>, <a class="el" href="Argument_8cpp_source.html#l00054">Argument::getNumber()</a>, and <a class="el" href="ExtendedArgument_8h_source.html#l00022">ExtendedArgument::INDEXDEFAULT</a>.</p>

</div>
</div>
<a class="anchor" id="a3e78f04209344bbe31b47c277076dc64"></a><!-- doxytag: member="SCCSEQ::toposort" ref="a3e78f04209344bbe31b47c277076dc64" args="(SetArguments, vector&lt; int &gt; *)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classSCCSEQ.html#a3e78f04209344bbe31b47c277076dc64">SCCSEQ::toposort</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classSetArguments.html">SetArguments</a>&#160;</td>
          <td class="paramname"><em>macroGraph</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">vector&lt; int &gt; *&#160;</td>
          <td class="paramname"><em>L</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>The function run the Kahn algorithm to compute a topological sort of a graph. Fort further information about this algorithm, please visit the page <a href="http://en.wikipedia.org/wiki/Topological_sorting#Algorithms">http://en.wikipedia.org/wiki/Topological_sorting#Algorithms</a></p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">G</td><td>a <a class="el" href="classSetArguments.html" title="Class encompassing a set of arguments.">SetArguments</a> representing the macrograph of SCC. Macrograph is a graph where single arguments are none other than SCC computed by Tarjan Algorithm (implmented by <a class="el" href="classSCCSEQ.html#a4773a37b2ec85f1c113f210242d63da9" title="Computes the SCC algorithm.">SCC()</a> function) </td></tr>
    <tr><td class="paramname">L</td><td></td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="SCCSEQ_8cpp_source.html#l00273">273</a> of file <a class="el" href="SCCSEQ_8cpp_source.html">SCCSEQ.cpp</a>.</p>

<p>References <a class="el" href="SetArguments_8cpp_source.html#l00103">SetArguments::begin()</a>, <a class="el" href="SetArguments_8cpp_source.html#l00094">SetArguments::empty()</a>, <a class="el" href="SetArguments_8cpp_source.html#l00112">SetArguments::end()</a>, <a class="el" href="Argument_8cpp_source.html#l00200">Argument::get_attackers()</a>, <a class="el" href="Argument_8cpp_source.html#l00191">Argument::get_attacks()</a>, <a class="el" href="Argument_8cpp_source.html#l00054">Argument::getNumber()</a>, <a class="el" href="SetArguments_8cpp_source.html#l00825">SetArguments::graphHasEdges()</a>, <a class="el" href="SetArguments_8cpp_source.html#l00795">SetArguments::printNodeRelations()</a>, <a class="el" href="Argument_8cpp_source.html#l00182">Argument::remove_attackers()</a>, and <a class="el" href="Argument_8cpp_source.html#l00172">Argument::remove_attacks()</a>.</p>

<p>Referenced by <a class="el" href="SCCSEQ_8cpp_source.html#l00073">SEQ()</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>src/<a class="el" href="SCCSEQ_8h_source.html">SCCSEQ.h</a></li>
<li>src/<a class="el" href="SCCSEQ_8cpp_source.html">SCCSEQ.cpp</a></li>
</ul>
</div><!-- contents -->
</div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="classSCCSEQ.html">SCCSEQ</a>      </li>

    <li class="footer">Generated on Fri Jan 17 2014 11:47:52 for SemOpt by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.6.1 </li>
   </ul>
 </div>


</body>
</html>
